package ar.org.cfired.creditos.abm;


import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessInstance;

import ar.org.cfired.hibernate.utils.HibernateUtil;
import junit.framework.*;
import ar.org.cfired.creditos.abm.*;
import java.util.HashMap;

import ar.org.cfired.creditos.gui.Funcionalidad;

public class AbmTest2  extends TestCase {
private Session session;
private Transaction t;
private Abm abm;
private SessionFactory sessionFactory;


	public void testBuscarDestinatario() {
		Session sess = sessionFactory.getCurrentSession();
		sess.beginTransaction();
		//Destinatario destinatario = new Destinatario();
		Entidad destinatario = EntidadFactory.getEntidad("destinatario");
		HashMap<String, Object> variables = new HashMap<String, Object>();
		variables.put("obs_usuario", "Numero 3");		
		destinatario.setVariables(variables);
		//destinatario.setObsUsuario("Numero 3");
		//abm = new Abm();
		abm.session = sess;
		List<Entidad> respuesta = (List<Entidad>)abm.buscar(destinatario);
		assertEquals("Debe haber una respuesta y hay " + respuesta.size(), 1, respuesta.size());
		sess.getTransaction().commit();
		if (sess.isOpen()) 
			sess.close();
	}
	
	public void testHibernate(){
		 Session sess = sessionFactory.getCurrentSession();
		 sess.beginTransaction();
		Destinatario des = new Destinatario();
		des.setDesId(1);
		des.setObsId(1);
		Abm abm = new Abm(sess);
		List<Entidad> enti =  abm.buscar(des);
		assertTrue("Debe haber al menos un Destinatario", enti.size()>0);

		sess.getTransaction().commit();
		if (sess.isOpen())
			sess.close();
	}
	
	
	
	public List<Entidad> busqueda(Entidad ent){
		
		List<Entidad> a = null;
		return (a);
	}
	
	public void tearDown() {
		//session.close();
	}
	
	 protected void setUp() {
		 sessionFactory = new org.hibernate.cfg.Configuration().configure("hib.cfg.xml").buildSessionFactory();
		 session = sessionFactory.getCurrentSession();
		 t = session.beginTransaction();
		 abm = new Abm();
		 try{
		 //ArrayList<Destinatario> arrDestinatario= new ArrayList<Destinatario>();
		
		 for(int i=1;i<5;i++) 
			{
				Destinatario d = new Destinatario();
				//d.setDesId(i);
				d.setObsId(1);
				d.setObsUsuario("Numero " + i);
				session.save(d);
				//arrDestinatario.add(d);
			}
		 
		 t.commit();

		 /*Destinatario destinatario = new Destinatario();
			//destinatario.setObsUsuario("Numero 3");
			abm = new Abm();
			abm.session = session;
			List<Entidad> respuesta = (List<Entidad>)abm.buscar(destinatario);
			System.out.println("Tengo " + respuesta.size() + " respuestas!!!");
		 */

		 if (session.isOpen())
			 session.close();
		 //AbmDestinatario abmDes = new AbmDestinatario(arrDestinatario,session);
		 //abmDes.setGuardar();
		 
		  
		
		
			
		 }
			catch(Exception e){
				e.printStackTrace();
				t.rollback();
			}
			finally{
				if(t != null)
					if(t.isActive()){
						//t.commit();
						}
					/*else
						t.rollback();*/
						
			}
	 }
	
	public static void main (String args[]) {
		
		AbmTest2 s = new AbmTest2();
		s.setUp();

		//s.testHibernate();
		s.tearDown();
	}
}
